package sqlTestes.tComplexoSelect;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;

import sql.ddl.Tabela;
import sql.ddl.coluna.Coluna;
import sql.dml.selecao.FabricaSelecao;
import sql.dml.selecao.Select;
import sql.dml.selecao.coluna.ColunaSelecao;
import sql.dml.selecao.coluna.Oque;
import sql.dml.selecao.tabela.Onde;
import sql.dml.selecao.tabela.TabelaSelecao;

public class TesteTabelasSelecaoUsandoAlias implements Especificacao2 {
	Select selecaoAgua = null;

	TabelaSelecao agua = new TabelaSelecao(new Tabela("Agua"));

	TabelaSelecao fogo = new TabelaSelecao(new Tabela("Fogo"));

	@Before
	public void up() {
	}

	@Test
	public void selecionarTabelaAgua_Fogo_colunasAgua_a_alias_meuAlias_Coluna_Fogo_b() {

		ColunaSelecao a = new ColunaSelecao(new Coluna("Int", "a", false), agua);
		a.setAlias("meuAlias");
		ColunaSelecao b = new ColunaSelecao(new Coluna("Int", "b", false), fogo);

		Select selecao = FabricaSelecao.fabricaSelecao(
				new Onde[] { agua, fogo }, new Oque[] { a, b });
		Assert.assertEquals("SELECT Agua.a AS meuAlias,Fogo.b FROM Agua,Fogo",
				selecao.codigoSQL());
	}

	@Test
	public void selecionarTabelaAgua_Fogo_Alias_fog_colunasAgua_a_alias_meuAlias_Coluna_Fogo_b() {

		ColunaSelecao a = new ColunaSelecao(new Coluna("Int", "a", false), agua);
		a.setAlias("meuAlias");
		ColunaSelecao b = new ColunaSelecao(new Coluna("Int", "b", false), fogo);
		fogo.setAlias("fog");
		Select selecao = FabricaSelecao.fabricaSelecao(
				new Onde[] { agua, fogo }, new Oque[] { a, b });

		Assert.assertEquals(
				"SELECT Agua.a AS meuAlias,fog.b FROM Agua,Fogo AS fog",
				selecao.codigoSQL());
	}

}
